package com.ruoyi.service.project.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.utils.StringUtils;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * <p>
 * 项目岗位招聘情况
 * </p>
 *
 * @author Zane
 * @since 2025-10-14
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("t_project_labor")
public class ProjectLaborEntity implements Serializable {

  private static final long serialVersionUID = 1L;

  /**
   * 主键
   */
  @TableId(value = "id", type = IdType.AUTO)
  private Long id;

  /**
   * 项目ID
   */
  @TableField("project_id")
  private String projectId;

  /**
   * 制作者用户ID
   */
  @TableField("labor_id")
  private Long laborId;

  /**
   * 制作者用户姓名
   */
  @TableField("labor_name")
  private String laborName;

  /**
   * 制作者用户电话
   */
  @TableField("labor_phone")
  private String laborPhone;

  /**
   * 应聘岗位
   */
  @TableField("post_code")
  private String postCode;

  /**
   * 应聘岗位名称
   */
  @TableField("post_name")
  private String postName;

  /**
   * 应聘岗位等级编码
   */
  @TableField("post_level_code")
  private String postLevelCode;

  /**
   * 应聘岗位等级名称
   */
  @TableField("post_level_name")
  private String postLevelName;

  /**
   * 天数
   */
  @TableField("hire_days")
  private Integer hireDays;

  /**
   * 实际工作天数,正常与雇佣一致,离岗修改
   */
  @TableField("real_days")
  private Integer realDays;

  /**
   * 雇佣状态:0 待审核  1 招募通过(在岗)  2 招募驳回 3 离岗
   */
  @TableField("status")
  private Integer status;

  /**
   * 打卡标识,(离岗不打卡,但计算薪资)  0 未打卡 1 已打卡
   */
  @TableField("work_finish_flag")
  private Integer workFinishFlag;

  /**
   * 进项方式:0 申请  1 招募
   */
  @TableField("invited_flag")
  private Integer invitedFlag;

  /**
   * 招募者
   */
  @TableField("hired_by")
  private Long hiredBy;

  /**
   * 招募时间
   */
  @TableField("hired_time")
  private LocalDateTime hiredTime;

  /**
   * 创建者
   */
  @TableField("create_by")
  private Long createBy;

  /**
   * 创建时间
   */
  @TableField("create_time")
  private LocalDateTime createTime;

  /**
   * 更新者
   */
  @TableField("update_by")
  private Long updateBy;

  /**
   * 更新时间
   */
  @TableField("update_time")
  private LocalDateTime updateTime;


  public String postAndLevelKey() {
    return StringUtils.format("{}_{}", postCode, postLevelCode);
  }

}
